
#pragma once

#include "UeHlr.h"
#include <map>

#pragma warning (disable: 4275)


class DllImpExp UsdkHiddenLineBase: public UcRxObject {

protected:
	std::map<UcDbEntity *, UcDbVoidPtrArray *> m_entityBodies ;

public:
	UCRX_DECLARE_MEMBERS (UsdkHiddenLineBase) ;

	//----- Function to append BODY objects to the list
	//----- If required, then it also indicates which objects the
	//----- body was created from ( important for blocks )
	virtual Ucad::ErrorStatus prepare (UcDbEntity *pEnt, UcDbVoidPtrArray &bodies, int control, const UcDbViewport *pVp) ;
	virtual Ucad::ErrorStatus getBody (void *pBodyData, int control) ;

	static Ucad::ErrorStatus saveData (UcDbEntity *pEnt, void *pBodyData) ;
	static ZSoft::Boolean retrieveData (UcDbEntity *pEnt, UcDbVoidPtrArray &bodies, const UcDbViewport *pVp =NULL) ;
	
	static void clear () ;
	static void clear (UcDbEntity *pEnt) ;
	static void clear (UcDbEntity *pEnt, UcDbViewport *pVp) ;

    // This method is a specific feature in UECAD HLR.
    static bool setDebugMode(bool bDebugMode);
    static bool debugMode();
} ;
